Technical Q&A QA1229
OpenGL and 3D Graphics Changes in Mac OS X v10.2.3


Q: Mac OS X v10.2.3 ëŒâûÇà OpenGL ÇΔ 3 éüå≥ÉOÉâÉtÉBÉbÉNÉXÇÕÅAÇ«ÇÃÇÊǧDžïœçXÇ≥ÇÍÇΩÇÃÇ≈Ç∑Ç©ÅH

A: Mac OS X v10.2.3 Ç≈ÇÕÅAOpenGL 1.4 ÇÃÉTÉ|Å[ÉgÅA13 ÇÃêVÇΩÇ» OpenGL ägí£ÅAÉXÉeÉåÉIÉTÉ|Å[ÉgÇÃå¸è„ÅAÇ®ÇÊÇ— OpenGL Utility Toolkit (GLUT) ÇÃÉAÉbÉvÉfÅ[ÉgÇ™í«â¡Ç≥ÇÍNjǵÇΩÅBÇ≥ÇÁÇ…ÅAç°âÒÇÃÉAÉbÉvÉfÅ[ÉgÇ…ÇÕÅA3 éüå≥ÉOÉâÉtÉBÉbÉNÉXÉpÉCÉvÉâÉCÉìÇÃâ¸ó«Ç‚ÉoÉOèCê≥ǙǢÇ≠Ǭǩä‹Ç‹ÇÍǃǢNjÇ∑ÅBOpenGL 1.4 ÇÉTÉ|Å[ÉgÇ∑ÇÈÉOÉâÉtÉBÉbÉNÉXÉvÉçÉZÉbÉTÇ…ëŒâûǵǃÅAåªç›ÅAÉäÉXÉg 1 Ç…é¶Ç∑ã@î\Ç… OpenGL ÇÃÉRÉAã@î\Ç…ä‹Ç‹ÇÍǃǢNjÇ∑ÅBäJî≠é“ÇÕÅAÉåÉìÉ_ÉâÇà GL_VERSION ÉXÉgÉäÉìÉOÇämîFǵǃÅAOpenGL 1.4 Ç™ÉTÉ|Å[ÉgÇ≥ÇÍǃǢÇÈÇ©ÇîªífÇ∑ÇÈÇ◊Ç´Ç≈Ç∑ÅB


  • É~ÉbÉvÉ}ÉbÉvÇÃé©ìÆê∂ê¨ÇÕÅAÉeÉNÉXÉ`ÉÉÉpÉâÉÅÉ^ GL_GENERATE_MIPMAP Ç GL_TRUE Ç…ê›íËÇ∑ÇÈDZÇΔÇ≈çsÇÌÇÍÇ‹Ç∑ÅBÉ~ÉbÉvÉ}ÉbÉvÇÃé©ìÆê∂ê¨Ç…ÇÊÇËÅAÉ~ÉbÉvÉ}ÉbÉvîzóÒÇÃÉåÉxÉãÉxÅ[ÉXÇÃǢǩǻÇÈèCê≥Ç…ëŒÇµÇƒÇ‡ïõéüìIÇ»âeãøÇ™Ç‡ÇΩÇÁÇ≥ÇÍÅAÉ~ÉbÉvÉ}ÉbÉvÉsÉâÉ~ÉbÉhÇÃçÇÉåÉxÉãëwëSǃDžǬǢǃÅAäÓñ{ÉåÉxÉãîzóÒÇÃòAë±ìIÇ»ÉtÉBÉãÉ^ÉäÉìÉOÇ…ÇÊÇÈçƒåvéZÇ™é©ìÆìIÇ…çsÇÌÇÍÇ‹Ç∑ÅB
  • Blend Squaring ÇÕÅAÉTÉ|Å[ÉgÇ≥ÇÍÇΩÉ\Å[ÉXÇ®ÇÊÇ—ÉfÉXÉeÉBÉlÅ[ÉVÉáÉìÇÃÉuÉåÉìÉhä÷êîåQÇägí£ÇµÇƒÅAÉuÉåÉìÉhèàóùíÜÇ… RGB ÇΔÉAÉãÉtÉ@ílÇ 2 èÊÇ≈Ç´ÇÈÇÊǧDžǵNjÇ∑ÅB
  • Imaging ÉTÉuÉZÉbÉgÇ™ïœçXÇ≥ÇÍÅABlendEquationÅABlendColorÅABlendFunc ÉÇÅ[ÉhÇà GL_CONSTANT_COLORÅAGL_ONE_MINUS_CONSTANT_COLORÅAGL_CONSTANT_ALPHAÅAGL_ONE_MINUS_CONSTANT_ALPHA ǻǫǙê∑ÇËçûÇ‹ÇÍÇ‹Ç∑ÅBDZÇÍÇÁÇÃã@î\ÇÕÅAà»ëOÇÕ OpenGL ÇÃÉoÅ[ÉWÉáÉì 1.2 ÇΔ 1.3 ÇÃãKäiÇ…Ç®ÇØÇÈÉIÉvÉVÉáÉìÇà imaging ÉTÉuÉZÉbÉgÇ≈ÇæÇØóòópÇ∑ÇÈDZÇΔÇ™Ç≈ǴNjǵÇΩÅB
  • ÉfÉvÉXÉeÉNÉXÉ`ÉÉÇ®ÇÊÇ—ÉVÉÉÉhÉEÉeÉNÉXÉ`ÉÉÇÕÅAêVÇΩÇ»ÉeÉNÉXÉ`ÉÉÇÃì‡ïîÉtÉHÅ[É}ÉbÉgÇ≈džÇÈ GL_DEPTH ÇíËã`ǵNjÇ∑ÅBí èÌÅAGL_DEPTH ÇÕÉfÉvÉXílÇï\Ç∑ÇΩÇflÇ…égópÇ≥ÇÍÇÈLJÇÃÇ≈Ç∑ÅBÉAÉvÉäÉPÅ[ÉVÉáÉìÇ…ÇÕÅAÉCÉÅÅ[ÉWÉxÅ[ÉXÇÃÉVÉÉÉhÉEÉLÉÉÉXÉeÉBÉìÉOÅAíuä∑É}ÉbÉsÉìÉOÅAÇ®ÇÊÇ—ÉCÉÅÅ[ÉWÉxÅ[ÉXÇÃÉåÉìÉ_ÉäÉìÉOǙdžÇËÇ‹Ç∑ÅBÉCÉÅÅ[ÉWÉxÅ[ÉXÇÃÉVÉÉÉhÉEÉCÉìÉOÇÕÅAÉpÉâÉÅÉ^ GL_TEXTURE_COMPARE_MODE ÇÃíËã`Ç…ÇÊÇÈêVÇΩÇ»ÉeÉNÉXÉ`ÉÉÉAÉvÉäÉPÅ[ÉVÉáÉìÉÇÅ[ÉhÇ≈óLå¯Ç…Ç»ÇËÇ‹Ç∑ÅB
  • ÉtÉHÉOç¿ïWÇÕÅAÉtÉâÉOÉÅÉìÉgópÇÃÉtÉHÉOåvéZÇ…égópÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBDZÇÍÇÕÅAÉtÉâÉOÉÅÉìÉgÇ…ëŒÇ∑ÇÈìÒì_ä‘ÇÃãóó£ÇÃégópÇ…ë„ÇÌÇÈLJÇÃÇ≈džÇËÅAÇÊÇËï°éGÇ»ÉtÉHÉOÉÇÉfÉãDžǮǢǃóLå¯Ç≈Ç∑ÅB
  • ï°êîÇÃÉhÉçÅ[ÉAÉåÉCÇ≈ÇÕÅAglMultiDrawArrays Ç®ÇÊÇ— glMultiDrawElements ÇΔǢǡÇΩÉRÉ}ÉìÉhÇàÍìxåƒÇ—èoÇ∑ÇæÇØÇ≈ÅAï°êîÇÃÉvÉäÉ~ÉeÉBÉuÇÉåÉìÉ_ÉäÉìÉOÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB
  • É|ÉCÉìÉgÉpÉâÉÅÉ^ÇÕÅAÉ|ÉCÉìÉgÇÃçXÇ»ÇÈäÙâΩäwìIì¡ê´ÇÉTÉ|Å[ÉgǵÅAÉ|ÉCÉìÉgÉTÉCÉYÇ™íºê¸ãóó£Ç‹ÇΩÇÕïΩñ ãóó£ÇÃå∏êäÇ…ÇÊÇÈâeãøÇéÛÇØÇÈÇÊǧDžǵNjÇ∑ÅBdžÇÌÇπǃÅAÉ|ÉCÉìÉgÉTÉCÉYÇ©ÇÁÉâÉXÉ^É|ÉCÉìÉgÉGÉäÉAÇ÷ÇÃÉ}ÉbÉsÉìÉOêßå‰Ç‚ÅAÉ|ÉCÉìÉgÇÃìßñæìxêßå‰ÇçÇÇflÇ‹Ç∑ÅBDZÇÃå¯â ÇÕÅAÉpÅ[ÉeÉBÉNÉãÇ‹ÇΩÇÕÉâÉCÉgÉ|ÉCÉìÉgÇÃÉåÉìÉ_ÉäÉìÉOÇ≈ÇÃãóó£å∏êäDžLJñóßǬDZÇΔǙdžÇËÇ‹Ç∑ÅB
  • ÉZÉJÉìÉ_ÉäÉJÉâÅ[ÇÕÅAåıÇ™ñ≥å¯Ç…ǻǡǃǢÇÈèÍçáÇ≈LJÅAglSecondaryColor ÉRÉ}ÉìÉhÇ≈í∏ì_ÉpÉâÉÅÉ^ÇΔǵǃéwíËÇ∑ÇÈDZÇΔÇ…ÇÊÇËïœâªÇ≥ÇπÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB
  • å¬ï ÇÃÉuÉåÉìÉhä÷êîÇ…ÇÊÇËÅAÉ\Å[ÉXÉuÉåÉìÉhàˆéqÇΔÉfÉXÉeÉBÉlÅ[ÉVÉáÉìÉuÉåÉìÉhàˆéqÇïKóvÇΔÇ∑ÇÈÉuÉåÉìÉhëÄçÏÇ…ä÷ǵǃÅARGB ÉuÉåÉìÉhä÷êîÇΔÉAÉãÉtÉ@ÉuÉåÉìÉhä÷êîÇǪÇÍǺÇÍå¬ï Ç…ê›íËÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB
  • ÉXÉeÉìÉVÉãÉâÉbÉvëÄçÏ (GL_INCR_WRAP ÇΔ GL_DECR_WRAP) Ç…ÇÊÇËÅAÉXÉeÉìÉVÉãílÇÃëùâ¡íÜÇ…ç≈ëÂílÇéÊÇ¡ÇΩÇËÅAå∏è≠íÜÇ…ç≈è¨ílÇéÊÇÈÇÃÇ≈ÇÕÇ»Ç≠ÅAÉXÉeÉìÉVÉãílÇÃîÕàÕÇéwíËǵǃèzä¬Ç∑ÇÈÇÊǧDžÇ≈Ç´Ç‹Ç∑ÅB
  • ÉeÉNÉXÉ`ÉÉÉNÉçÉXÉoÅ[ä¬ã´ÉÇÅ[ÉhÇ≈ÇÕÅAàŸÇ»ÇÈÉeÉNÉXÉ`ÉÉÉÜÉjÉbÉgÇÃÉeÉNÉXÉ`ÉÉÉJÉâÅ[ÇÅAÉeÉNÉXÉ`ÉÉçáê¨ã@î\ÇÃÉ\Å[ÉXÇΔǵǃégópÇ≈Ç´ÇÈÇÊǧDžÇ∑ÇÈDZÇΔÇ≈ÅAÉeÉNÉXÉ`ÉÉçáê¨ä¬ã´ÉÇÅ[Éh (GL_COMBINE) Çägí£ÇµÇ‹Ç∑ÅB
  • ÉeÉNÉXÉ`ÉÉè⁄ç◊ÉåÉxÉã (LOD) ÉoÉCÉAÉXÇê›íËǵǃÅAÉ~ÉbÉvÉ}ÉbÉvè⁄ç◊ÉåÉxÉãëIëÇÃÉeÉNÉXÉ`ÉÉÉäÉìÉOÇ≈égópÇ≥ÇÍÇÈåvéZçœÇÃÉâÉÄÉ_ÉpÉâÉÅÉ^Ç…ÉoÉCÉAÉXÇÇ©ÇØÅAÉeÉNÉXÉ`ÉÉÇÇ⁄ǩǵÇΩÇËÅAÇÕǡǴÇËÇ≥ÇπÇΩÇËÇ≈Ç´Ç‹Ç∑ÅBLOD ÉoÉCÉAÉXÇÕÅAÉtÉBÅ[ÉãÉhÇÃê[ìxǂǟǩÇÃì¡ï Ç»éãäoå¯â Ç…égópÇ≥ÇÍÇÈÇŸÇ©ÅAdžÇÈéÌÇÃâÊëúèàóùDžLJégópÇ≥ÇÍDZÇΔLJdžÇËÇ‹Ç∑ÅB
  • ÉeÉNÉXÉ`ÉÉÇÃÉ~ÉâÅ[ÉäÉsÅ[ÉgÇÕÅAGL_MIRRORED_REPEAT ÉÇÅ[ÉhÇ≈ÉeÉNÉXÉ`ÉÉÉâÉbÉvÉÇÅ[ÉhÇÃê›íËÇägí£ÇµÇ‹Ç∑ÅBDZÇÍÇÕÅAéñé¿è„ÅAå≥ÇÃÉeÉNÉXÉ`ÉÉÉCÉÅÅ[ÉWÇà 2 î{ÇÃëÂÇ´Ç≥ÇÃÉeÉNÉXÉ`ÉÉÉ}ÉbÉvÇíËã`ǵNjÇ∑Ç™ÅA2 î{DžǻǡÇΩÇ§ÇøÇÃîºï™Çç\ê¨Ç∑ÇÈãæëúÉeÉNÉXÉ`ÉÉÇÃäeç¿ïWÇÕÅAå≥ÇÃÉeÉNÉXÉ`ÉÉÇÃãæëúÇ≈Ç∑ÅBÉ~ÉâÅ[ÉäÉsÅ[ÉgÇÕÅAÉTÅ[ÉtÉFÉXÇÃã´ñ⁄ÇÃǻǢÉ^ÉCÉäÉìÉOÇ…égópÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB
  • ÉEÉCÉìÉhÉEÉâÉXÉ^Å[É|ÉWÉVÉáÉìÇ≈ÇÕÅAglWindowPos ÉRÉ}ÉìÉhÇégópǵǃÉâÉXÉ^Å[É|ÉWÉVÉáÉìÇíºê⁄ì¡íËÇÃÉEÉCÉìÉhÉEç¿ïWÇ…ê›íËǵÅAglRasterPos Ç…ÇÊÇÈïœä∑Ç™ç¿ïWÇ…ìKópÇ≥ÇÍǻǢÇÊǧDžÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB

ÉäÉXÉg 1. OpenGL 1.4 ÇÃã@î\


ÉäÉXÉg 2 Ç…é¶Ç∑ägí£Ç™ Mac OS X ëŒâûÇà OpenGL Ç…í«â¡Ç≥ÇÍǃǢNjÇ∑ÅBäJî≠é“ÇÕÅAì¡íËÇÃÉåÉìÉ_ÉâÇ™ÉTÉ|Å[ÉgÇ≥ÇÍǃǢÇÈǩǫǧǩÅAägí£ÉXÉgÉäÉìÉOÇå©ÇƒämîFÇ≈Ç´Ç‹Ç∑ÅBÇ‹ÇΩÅAägí£ÇÃégÇ¢ï˚ÇΔédólDžǬǢǃÇÕÅAMac OS X OpenGL Extensions GuideÅiâpåÍÇÃèÓïÒÇ≈Ç∑ÅjÇéQèΔǵǃÇ≠ÇæÇ≥Ç¢ÅB


  • GL_APPLE_float_pixels
  • GL_ARB_fragment_program
  • GL_ARB_shadow_ambient
  • GL_ARB_vertex_blend
  • GL_ARB_window_pos
  • GL_EXT_multi_draw_arrays
  • GL_EXT_s3tc_texture_compression
  • GL_EXT_shadow_funcs
  • GL_EXT_stencil_two_side
  • GL_ATI_point_cull
  • GL_ATI_texture_mirror_once
  • GL_NV_light_max_exponent
  • GL_SGIS_generate_mipmap

ÉäÉXÉg 2. êV OpenGL ägí£


GLUT Ç™ÉAÉbÉvÉfÅ[ÉgÇ≥ÇÍÅAÉWÉáÉCÉXÉeÉBÉbÉNÇΔÉXÉeÉåÉIÇÃÉRÉìÉeÉLÉXÉgÇ…ëŒÇ∑ÇÈÉTÉ|Å[ÉgÇ™â¡ÇÌÇËNjǵÇΩÅBÇ‹ÇΩÅAÉCÉxÉìÉgèàóùÇÃã@î\LJëÂïùÇ…â¸ó«Ç≥ÇÍÇΩÇΩÇflÅAëΩÇ≠ÇÃèÍñ Ç≈ÅAà¿íËǵÇΩÉpÉtÉHÅ[É}ÉìÉXǙLJÇΩÇÁÇ≥ÇÍ CPU ÇÃêËóLéûä‘LJå∏ÇËÇ‹Ç∑ÅB

Ç∑Ç≈Ç…ê‡ñæçœÇ›ÇÃí«â¡éñçÄÇ®ÇÊÇ—â¸ëPéñçÄÇ…â¡Ç¶ÅAÉäÉXÉg 3 Ç…ÅAäJî≠é“Ç…âeãøÇó^ǶÇÈâ¬î\ê´ÇÃdžÇÈ 3D ÉOÉâÉtÉBÉbÉNÉXÇÃÉoÉOÇÃÇ§Çø Mac OS X v10.2.3 DžǮǢǃèCê≥Ç≥ÇÍÇΩLJÇÃÇÃíÜÇ©ÇÁë„ï\ìIǻLJÇÃÇé¶ÇµÇ‹Ç∑ÅB


  • iPhoto ÉXÉâÉCÉhÉVÉáÅ[ÇèCê≥ (r. 2851438)
  • ÉXÉNÉäÅ[ÉìÉZÉCÉoÅ[ÇèCê≥ (r. 2947854, 2981882, 2983532, 3049055)
  • çXÇ»ÇÈ OpenGL ÇÃà¿íËê´ã≠⪠(r. 2987229, 3010024, 3044963)
  • DVD ÉrÉWÉÖÉAÉãÇèCê≥ (r. 2988472, 3034700, 3065118, 3099283, 3102416, 3102431, 3109605)
  • Bugdom Ç…Ç®ÇØÇÈääÇÁÇ©Ç≥ÇÃå¸è„ (r. 3002070, 3108864)
  • Shader Builder ÉTÉ|Å[ÉgÇÃå¸è„ (r. 3003329)
  • Java ÉOÉâÉtÉBÉbÉNÉTÉ|Å[ÉgÇÃå¸è„ (r. 3007437)
  • GL_ATI_text_fragment_shader Çâ¸ó« (r. 3023059)
  • LOD ÉoÉCÉAÉXñ‚ëËÇèCê≥ (r. 3039061, 33039007)
  • ÉeÉNÉXÉ`ÉÉÉäÉìÉOÇèCê≥ (r. 3063842, 3063845, 3033919)
  • ägí£ÉfÉBÉXÉvÉåÉCÉTÉ|Å[ÉgÇÃå¸è„ (r. 3071846, 3081613, 3101551, 3122070, 2999184, 3003635, 3025839, 3088102)
  • glReadPixels ÇÃåòòSê´ÇÃå¸è„ (r. 3110816, 3113045, 3103065)
  • ÉJÅ[É\Éãñ‚ëËÇèCê≥ (r. 3058957)
  • ÉâÉCÉìÉÇÅ[ÉhÇèCê≥ (r. 3092958)
  • àÍïîÇà w = 0 ñ‚ëËÇèCê≥ (r. 3093070)
  • ÉeÉNÉXÉ`ÉÉîÕàÕÇÃÉTÉ|Å[ÉgÇÃå¸è„ (r. 3093739)
  • OpenGL ÇÃédólÇ…âàÇ¡ÇΩÅAàÍïîÇà OpenGL ÉwÉbÉ_êÈåæÇèCê≥ (r. 3013229, 3014102)
  • OpenGL ÇÃàÍïîÇÃÉNÉGÉäÇèCê≥ (r. 3116500)
  • GLUT Ç÷ÇÃï°êîÉfÉBÉXÉvÉåÉCÉTÉ|Å[ÉgÇí«â¡ (r. 2932866)
  • GLUT ìKçáÉeÉXÉgÇèCê≥ (r. 3094824, 3110053)
  • GLUTÇ…Ç®ÇØÇÈÉEÉCÉìÉhÉEÇ®ÇÊÇ— visibility èàóùÇÃå¸è„ (r. 3094828, 3065960, 3110804)
  • GLUT Ç…Ç®ÇØÇÈÉtÉãÉXÉNÉäÅ[ÉìÉoÉbÉNÉOÉâÉEÉìÉhÇÃÉäÉTÉCÉYñ‚ëËÇÃèCê≥ (r. 3094832)
  • GLUT ÇÃÉRÉìÉ\Å[ÉãèoóÕÇÃîrèú (r. 3095226)
  • GLUT ÇÃéÛìÆÉÇÅ[ÉVÉáÉìÇΔÉÅÉjÉÖÅ[èàóùÇÃå¸è„ (r. 3065960, 3091508, 3082250)
  • GLUT ÇÃÉCÉxÉìÉgèàóùÇΔÉ^ÉCÉ}Å[èàóùÇÃëSî ìIÇ»å¸è„ (r. 3032121)

ÉäÉXÉg 3. 3D ÉOÉâÉtÉBÉbÉNÉoÉOèCê≥çÄñ⁄



[2003 îN 1 åé 3 ì˙]